#!/usr/bin/python
# -*- coding: utf-8 -*-


'''
Created on 31/01/2010
@author: Joger Quintero
@contact: jogerq@gmail.com
'''

import wx
import sys
import os

from imagenes import images
from contrasenhas.vista import VistaContrasenha
from cifrar.vista import VistaCifrar
from firmas.vista import VistaFirmas

#Hola

#Clase que carga la ventana principal
class Main(wx.App):
    
    def OnInit(self):
        self.ventana = VentanaPrincipal(950,600)
        self.SetTopWindow(self.ventana)
        return True
#----------------------------------------------------------------------------#
#Clase que crea las pestañas de la ventana principal
class TestNB(wx.Notebook):

    def __init__(self, parent, id):
        
        wx.Notebook.__init__(self, parent, id, size=(21,21), style=
                             wx.BK_DEFAULT
                             #wx.BK_TOP 
                             #wx.BK_BOTTOM
                             #wx.BK_LEFT
                             #wx.BK_RIGHT
                             # | wx.NB_MULTILINE
                             )
        
        self.parent = parent
        self.pestanha1 = VistaContrasenha(self)
        self.pestanha2 = VistaCifrar(self)
        #self.pestanha3 = VistaFirmas(self)
        #Creamos la primera pestaña y le enviamos un objeto de vistaContraseña
        self.AddPage(self.pestanha1, "Gestión de Contraseñas")
        self.AddPage(self.pestanha2,"Cifrar/Firmar Documentos")
        #self.AddPage(self.pestanha3,"Cifrar/Firmar Documentos")
        #####
        #PARA SEGUIR CREANDO PESTAÑAS SE SE UTILIZA EL METDO AddPage
        #####
        self.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED, self.OnPageChanged)
        self.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGING, self.OnPageChanging)

    
    #Método que controlan los cambios de pesañas
    def OnPageChanged(self, event):
        old = event.GetOldSelection()
        new = event.GetSelection()
        sel = self.GetSelection()
        
        if new == 0:
            self.pestanha1.tool()
            self.parent.eliminarMenu()
            self.pestanha1.menu()
            self.pestanha1.controlador.deshabilitarTools()
            
        if new == 1:
            self.pestanha2.tool()
            self.parent.eliminarMenu()
            self.pestanha2.menu()
            
            
        if new == 2:
            self.pestanha3.tool()
            self.parent.eliminarMenu()
            self.pestanha3.menu()
            
        #self.log.write('OnPageChanged,  old:%d, new:%d, sel:%d\n' % (old, new, sel))
        event.Skip()
        
    #Método que controlan los cambios de pesañas
    def OnPageChanging(self, event):
        old = event.GetOldSelection()
        new = event.GetSelection()
        sel = self.GetSelection()
        #self.log.write('OnPageChanging, old:%d, new:%d, sel:%d\n' % (old, new, sel))
        event.Skip()

#----------------------------------------------------------------------------#
#Clase que crear la ventana principal
class VentanaPrincipal(wx.Frame,wx.Notebook):
    
    def __init__(self,largo,ancho):
        #Llamamos al constructor de Frame
        wx.Frame.__init__(self,None,-1,"TIBISAY")
                             #,style= wx.CAPTION
                             # |wx.MINIMIZE_BOX
                             # |wx.CLOSE_BOX)
        
        #Procedemos a construir la interface de la ventana
        self.construir_interface()
        #wx.EVT_SET_FOCUS(self,self.focusVentana)
        #Procedemos a mostrar la ventana
        self.Show(True)
        #Le damos tamaño a la ventana
        self.Size = largo,ancho
    
    def construir_interface(self):
        #Asignamos eventos a la interfaz
        #Activamos el munu principal de la aplicación
        self.menu()
        self.tb = self.CreateToolBar()
        #Hacemos el llamado a las pestañas de la ventana
        TestNB(self, -1)
        
    
    def menu(self):
        
        self.MiMenuBar = wx.MenuBar()
        self.itemsMenu = wx.Menu()
        #Item
        self.itemsMenu.Append(99, "&Seguridad Informática", "", wx.ITEM_NORMAL)
        #Item
        item = wx.MenuItem(self.itemsMenu,101, "M&anual del Usuario\tCtrl+A", "")
        item.SetBitmap(images.getManualBitmap())
        self.itemsMenu.AppendItem(item)
        self.itemsMenu.AppendSeparator()
        #Item
        item = wx.MenuItem(self.itemsMenu,102, "Sa&lir\tCtrl+L", "")
        item.SetBitmap(images.getExitBitmap())
        self.itemsMenu.AppendItem(item)
        #
        self.MiMenuBar.Append(self.itemsMenu,"&Tibisay")
        self.SetMenuBar(self.MiMenuBar)
        self.Bind(wx.EVT_MENU, self.cerrar_ventana, id=102)
        
        #Fin del menu
    
    def __set__eventos(self):
        #Evento que cierra la aplicación
        #self.Bind(wx.EVT_SET_FOCUS, self.focusVentana)
        pass
    
    def eliminarMenu(self):
        '''
        @event:Menu que se clikclió
        @author: Joger Quintero
        @contact: jogerq@gmail.com
        Método que permite limpiar el wx.Menu desde la posición 1
        '''
        for i in range(1,self.MiMenuBar.GetMenuCount()):
            self.MiMenuBar.Remove(1)
        
    def cerrar_ventana(self,event):
        self.Close()
    
    #def focusVentana(self):
    #    print "Focus ventana"
       
if __name__ == '__main__':
    app = Main()
    app.MainLoop()
